package com.itheima.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

/**
 * @author 黑马程序员
 * @Company http://www.ithiema.com
 * @Version 1.0
 *
 *  这里实现了一个功能
 *     就是 获取了一个德鲁伊连接池对象
 *     有几个问题要思考
 *       1: 配置属性信息如何完成赋值?
 *       2: 连接池对象如何教给spring管理
 */
// 引入外部配置文件

public class JdbcConfig {
    // 如何完成配置文件中属性的赋值
    @Value("${jdbc.driver}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    // 把方法的返回值当成一个bean教给spring管理
    @Bean
    public DataSource createDataSource(){
        //创建数据源对象并返回
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);

        return druidDataSource;
    }

    //设置JDBC事务管理器
    @Bean
    public PlatformTransactionManager getTransactionManager(DataSource dataSource){
        return new DataSourceTransactionManager(dataSource);
    }
}
